<!doctype html>
<html lang="zh-CN"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
    <title>薛尧的博客</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="" />

    
    
    
    <link rel="stylesheet" href="../../../css/theme.min.css">

    
    
    
    
    <link rel="stylesheet" href="../../../css/custom.min.css">
    

    
</head>
<body>
        <div id="content" class="mx-auto"><header class="container mt-sm-5 mt-4 mb-4 mt-xs-1">
    <div class="row">
        
        <div class="col-sm-4 col-12 text-sm-right text-center pt-sm-4">
            <a href="../../../" class="text-decoration-none">
                <img id="home-image" class="rounded-circle"
                    
                        src="https://ueyao.github.io/image-hosting/blog/avatar.png"
                    
                />
            </a>
        </div>
        <div class="col-sm-8 col-12 text-sm-left text-center">
        
            <h2 class="m-0 mb-2 mt-4">
                <a href="../../../" class="text-decoration-none">
                    
                        薛尧
                    
                </a>
            </h2>
            <p class="text-muted mb-1">
                
                    Java Developer | Short Video Creator
                
            </p>
            <ul id="nav-links" class="list-inline mb-2">
                
                
                    <li class="list-inline-item">
                        <a class="badge badge-white " href="../../../about/" title="关于">关于</a>
                    </li>
                
                    <li class="list-inline-item">
                        <a class="badge badge-white " href="../../../post/" title="文章">文章</a>
                    </li>
                
                    <li class="list-inline-item">
                        <a class="badge badge-white " href="../../../categories/" title="分类">分类</a>
                    </li>
                
            </ul>
            <ul id="nav-social" class="list-inline">
                
                    <li class="list-inline-item mr-3">
                        <a href="http://github.com/flowstone" target="_blank">
                            <i class="fab fa-github fa-1x text-muted"></i>
                        </a>
                    </li>
                
                    <li class="list-inline-item mr-3">
                        <a href="mailto:xueyao.me#gmail.com" target="_blank">
                            <i class="fas fa-at fa-1x text-muted"></i>
                        </a>
                    </li>
                
            </ul>
        </div>
    </div>
    <hr />
</header>
<div class="container">
    <div class="pl-sm-2">
        <div class="mb-3">
            <h3 class="mb-0">BUG记录-多线程对事务的影响有多么大？</h3>
            
            <small class="text-muted">发布于 2021-10-14</small>
        </div>

        <article>
            <h4 id="问题描述">问题描述</h4>
<p>有一天，测试妹子W向我提了一个BUG，问题描述如下，当操作动作D时，动作D可以看作更新，更新我当前选择的那一条数据，妹子W看到操作D成功页面中多出一条一样的数据，期望的结果是只会更新当前选择行的数据，并不会新增多余的数据。</p>
<h4 id="问题原因">问题原因</h4>
<p>开始的时候，我认为代码有问题，查看一下代码，应该没有太大的问题，普通操作动作D时，数据会更新，不会新增多余的数据，但是在出现异常时，这个问题，就会复现出来，我当前猜想应该有事务有关系。</p>
<p>现在我先说明一下，动作D的业务逻辑，当我们点击动作D时，首先会调用更新操作，更新数据，此处的更新为先删除原先的数据，后重新插入数据，更新结束后，继续向下执行其它逻辑。在我Debug的时候，发现在删除的逻辑上事务有回滚，唯一的是插入数据竟没有回滚，我以为是Mybatis plus有什么特殊的骚操作,原谅当时无知的我，我在Google上找了好多文章就是没找到这个问题产生的原因。最后，只能把这个BUG先放一边，忙着修复其它Bug。</p>
<p>当我把所有的事情都忙完了，我又重新看了动作D的逻辑，看到插入的逻辑，这个插入数据的逻辑我是直接调用同事写好的方法，我看到产生BUG的原因，因为插入的数据有可能有许多，那段的逻辑使用了多线程插入数据。多线程影响事务回滚，事务没办法回滚多线程的数据。</p>
<h4 id="解决步骤">解决步骤</h4>
<p>发现问题后，当然要解决问题，多线程影响事务回滚，那我就用最笨的方法，重新写一段插入数据的逻辑，解决这个事务问题。写完代码本地测试，当出现异常时，删除操作回滚数据，新增操作回滚数据，解决完问题，发到测试环境让妹子W再测试一遍，美滋滋！</p>
<h4 id="总结">总结</h4>
<p>这个问题，浪费了我许多时间，上网找资料，还有掉头发，最后才发现问题的原因，事实说明我平时粗心大意，没有看清楚代码的逻辑，遇到问题首先不是看代码，而是上网找解决方法。这个坏习惯影响着我，以后的工作中应该避免这类事情的出现。还有一个问题，就是使用别人的代码一定要看中间的逻辑，别人使用没有问题，并不代表你使用那部分代码也没有问题，所以工作中要仔细。</p>

        </article>
    </div>

    <div id="disqus_thread"></div>
<script>
    window.disqus_config = function () {
    
    
    
    };
    (function() {
        if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) {
            document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.';
            return;
        }
        var d = document, s = d.createElement('script'); s.async = true;
        s.src = '//' + "xie-yao-de-bo-ke" + '.disqus.com/embed.js';
        s.setAttribute('data-timestamp', +new Date());
        (d.head || d.body).appendChild(s);
    })();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>

            </div>
        </div><footer class="text-center pb-1">
    <small class="text-muted">
        
        &copy; Copyright 2024
        
        |
        <a href="https://beian.miit.gov.cn/" target="_blank">苏ICP备14012079号</a>
        <br />
        由 <a href="https://gohugo.io/" target="_blank">Hugo</a> 强力驱动
        | 主题 <a href="https://github.com/austingebauer/devise" target="_blank">Devise</a>
        <br />

    </small>
</footer></body>
</html>
